﻿using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Metadata;

namespace XKPlatform.DataModels
{
    public partial class DataContext : DbContext
    {
        public DataContext()
        {
        }

        public DataContext(DbContextOptions<DataContext> options)
            : base(options)
        {
        }

        public virtual DbSet<SysDepartment> SysDepartment { get; set; }
        public virtual DbSet<SysDictionary> SysDictionary { get; set; }
        public virtual DbSet<SysForm> SysForm { get; set; }
        public virtual DbSet<SysLog> SysLog { get; set; } 
        public virtual DbSet<SysPage> SysPage { get; set; }
       // public virtual DbSet<SysPost> SysPost { get; set; }
       // public virtual DbSet<SysPostCfg> SysPostCfg { get; set; }
       // public virtual DbSet<SysPostGroup> SysPostGroup { get; set; }
        //public virtual DbSet<SysPostGroupPost> SysPostGroupPost { get; set; }
       // public virtual DbSet<SysPostRole> SysPostRole { get; set; }
      //  public virtual DbSet<SysPostUserRelevance> SysPostUserRelevance { get; set; }
        public virtual DbSet<SysRole> SysRole { get; set; }
        public virtual DbSet<SysTable> SysTable { get; set; } 
        public virtual DbSet<SysUser> SysUser { get; set; }
       


        // Unable to generate entity type for table 'dbo.SysAccessToken'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.SysRolePage'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.sysuser1209'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.table_store_ChangeTracking_version'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.tblSapPo_CDC_Landing'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.tblStop'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.Base_APICallLog'. Please see the warning messages.
        // Unable to generate entity type for table 'dbo.Base_APICallSet'. Please see the warning messages.

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
#warning To protect potentially sensitive information in your connection string, you should move it out of source code. See http://go.microsoft.com/fwlink/?LinkId=723263 for guidance on storing connection strings.
                optionsBuilder.UseSqlServer("");
            }
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.HasAnnotation("ProductVersion", "2.2.4-servicing-10062");

            modelBuilder.Entity<SysDepartment>(entity =>
            {
                entity.HasKey(e => e.DepartmentID);

                entity.HasIndex(e => e.DepartmentNo);

                entity.HasIndex(e => e.Org);

                entity.HasIndex(e => e.ParentID);

                entity.HasIndex(e => e.ParentNo);

                entity.Property(e => e.DepartmentID).ValueGeneratedNever();

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.DepartmentFullName).HasMaxLength(200);

                entity.Property(e => e.DepartmentName).HasMaxLength(60);

                entity.Property(e => e.DepartmentNo).HasMaxLength(36);

                entity.Property(e => e.ModifiedBy).HasMaxLength(50);

                entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.Org).HasMaxLength(50);

                entity.Property(e => e.ParentNo).HasMaxLength(36);
            });

            
            modelBuilder.Entity<SysForm>(entity =>
            {
                entity.HasKey(e => e.FormID);

                entity.HasIndex(e => e.FormNo);

                entity.Property(e => e.FormID).ValueGeneratedNever();

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.FormClass).HasMaxLength(50);

                entity.Property(e => e.FormName).HasMaxLength(50);

                entity.Property(e => e.FormName_EN).HasMaxLength(100);

                entity.Property(e => e.FormNo).HasMaxLength(100);

                entity.Property(e => e.ModifiedBy).HasMaxLength(50);

                entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.Remarks).HasMaxLength(500);
            });

            modelBuilder.Entity<SysLog>(entity =>
            {
                entity.HasKey(e => e.LogID);

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.IPAddress)
                    .HasMaxLength(30)
                    .IsUnicode(false);

                entity.Property(e => e.Title).HasMaxLength(30);

                entity.Property(e => e.Type).HasMaxLength(30);

                entity.Property(e => e.UserName).HasMaxLength(100);

                entity.Property(e => e.UserNo).HasMaxLength(50);
            });

             

            modelBuilder.Entity<SysPage>(entity =>
            {
                entity.HasKey(e => e.PageID);

                entity.HasIndex(e => e.OS);

                entity.HasIndex(e => e.ParentID);

                entity.Property(e => e.PageID).ValueGeneratedNever();

                entity.Property(e => e.ActionUrl).HasMaxLength(200);

                entity.Property(e => e.AreaType).HasMaxLength(50);

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.ModifiedBy).HasMaxLength(50);

                entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.OS).HasMaxLength(50);

                entity.Property(e => e.PageIcon).HasMaxLength(50);

                entity.Property(e => e.PageName).HasMaxLength(50);

                entity.Property(e => e.PageName_EN).HasMaxLength(100);

                entity.Property(e => e.PageType).HasMaxLength(50);

                entity.Property(e => e.PageUrl).HasMaxLength(200);

                entity.Property(e => e.Remarks).HasMaxLength(500);

                entity.Property(e => e.Sign).HasMaxLength(100);

                entity.Property(e => e.TemplateUrl).HasMaxLength(200);
            });

            //modelBuilder.Entity<SysPost>(entity =>
            //{
            //    entity.HasKey(e => e.PostID);

            //    entity.HasIndex(e => e.Org);

            //    entity.HasIndex(e => e.PostNo);

            //    entity.Property(e => e.PostID).ValueGeneratedNever();

            //    entity.Property(e => e.CreatedBy).HasMaxLength(50);

            //    entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

            //    entity.Property(e => e.ModifiedBy).HasMaxLength(50);

            //    entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

            //    entity.Property(e => e.Org).HasMaxLength(50);

            //    entity.Property(e => e.PostName).HasMaxLength(60);

            //    entity.Property(e => e.PostNo).HasMaxLength(36);
            //});

            //modelBuilder.Entity<SysPostCfg>(entity =>
            //{
            //    entity.HasIndex(e => e.Level);

            //    entity.HasIndex(e => e.Member);

            //    entity.HasIndex(e => e.Org);

            //    entity.HasIndex(e => e.PostNo);

            //    entity.HasIndex(e => e.Type);

            //    entity.Property(e => e.Member).HasMaxLength(50);

            //    entity.Property(e => e.Org).HasMaxLength(50);

            //    entity.Property(e => e.PostNo).HasMaxLength(50);

            //    entity.Property(e => e.Type).HasMaxLength(50);
            //});

            //modelBuilder.Entity<SysPostGroup>(entity =>
            //{
            //    entity.HasKey(e => e.PostGroupID);

            //    entity.HasIndex(e => e.Level);

            //    entity.HasIndex(e => e.Org);

            //    entity.HasIndex(e => e.ParentID);

            //    entity.HasIndex(e => e.ParentNo);

            //    entity.HasIndex(e => e.PostGroupNo);

            //    entity.Property(e => e.PostGroupID).ValueGeneratedNever();

            //    entity.Property(e => e.CreatedBy).HasMaxLength(50);

            //    entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

            //    entity.Property(e => e.ModifiedBy).HasMaxLength(50);

            //    entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

            //    entity.Property(e => e.Org).HasMaxLength(50);

            //    entity.Property(e => e.ParentNo).HasMaxLength(36);

            //    entity.Property(e => e.PostGroupName).HasMaxLength(60);

            //    entity.Property(e => e.PostGroupNo).HasMaxLength(36);
            //});

            //modelBuilder.Entity<SysPostGroupPost>(entity =>
            //{
            //    entity.HasIndex(e => e.Org);

            //    entity.HasIndex(e => e.ParentNo);

            //    entity.HasIndex(e => e.PostGroupNo);

            //    entity.HasIndex(e => e.PostNo);

            //    entity.Property(e => e.CreatedBy).HasMaxLength(50);

            //    entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

            //    entity.Property(e => e.Org).HasMaxLength(50);

            //    entity.Property(e => e.ParentNo)
            //        .IsRequired()
            //        .HasMaxLength(36);

            //    entity.Property(e => e.PostGroupNo)
            //        .IsRequired()
            //        .HasMaxLength(36);

            //    entity.Property(e => e.PostNo)
            //        .IsRequired()
            //        .HasMaxLength(36);
            //});

            //modelBuilder.Entity<SysPostRole>(entity =>
            //{
            //    entity.HasIndex(e => e.Org);

            //    entity.HasIndex(e => e.PostNo);

            //    entity.HasIndex(e => e.UserNo);

            //    entity.Property(e => e.ID).ValueGeneratedNever();

            //    entity.Property(e => e.Org).HasMaxLength(50);

            //    entity.Property(e => e.PostNo).HasMaxLength(36);

            //    entity.Property(e => e.Roles).HasMaxLength(2000);

            //    entity.Property(e => e.UserNo).HasMaxLength(36);
            //});

            //modelBuilder.Entity<SysPostUserRelevance>(entity =>
            //{
            //    entity.HasIndex(e => e.Org);

            //    entity.HasIndex(e => e.PostNo);

            //    entity.HasIndex(e => e.UserNo);

            //    entity.HasIndex(e => e.WorkCenterNo);

            //    entity.Property(e => e.CreatedBy).HasMaxLength(50);

            //    entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

            //    entity.Property(e => e.Org).HasMaxLength(50);

            //    entity.Property(e => e.PostNo)
            //        .IsRequired()
            //        .HasMaxLength(36);

            //    entity.Property(e => e.UserNo)
            //        .IsRequired()
            //        .HasMaxLength(36);

            //    entity.Property(e => e.WorkCenterNo)
            //        .IsRequired()
            //        .HasMaxLength(36);
            //});

            modelBuilder.Entity<SysRole>(entity =>
            {
                entity.HasKey(e => e.RoleID);

                entity.HasIndex(e => e.Org);

                entity.Property(e => e.RoleID).ValueGeneratedNever();

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.ModifiedBy).HasMaxLength(50);

                entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.Org).HasMaxLength(50);

                entity.Property(e => e.RoleName).HasMaxLength(60);

                entity.Property(e => e.RoleName_EN).HasMaxLength(100);
            });

            modelBuilder.Entity<SysTable>(entity =>
            {
                entity.HasKey(e => e.TableID);

                entity.HasIndex(e => e.TableNo);

                entity.Property(e => e.TableID).ValueGeneratedNever();

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.ModifiedBy).HasMaxLength(50);

                entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.Remarks).HasMaxLength(500);

                entity.Property(e => e.TableName).HasMaxLength(50);

                entity.Property(e => e.TableName_EN).HasMaxLength(100);

                entity.Property(e => e.TableNo).HasMaxLength(50);
            });

            

            modelBuilder.Entity<SysUser>(entity =>
            {
                entity.HasKey(e => e.UserID);

                entity.HasIndex(e => e.DepartmentID);

                entity.HasIndex(e => e.DepartmentNo);

                entity.HasIndex(e => e.Email);

                entity.HasIndex(e => e.Org);

                entity.HasIndex(e => e.QywxUserId);

                entity.HasIndex(e => e.UserNo);

                entity.Property(e => e.UserID).ValueGeneratedNever();

                entity.Property(e => e.ChangePasswordTime).HasColumnType("smalldatetime");

                entity.Property(e => e.CorpName).HasMaxLength(100);

                entity.Property(e => e.CreatedBy).HasMaxLength(50);

                entity.Property(e => e.CreatedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.DepartmentNo).HasMaxLength(36);

                entity.Property(e => e.Email).HasMaxLength(100);

                entity.Property(e => e.LastLoginTime).HasColumnType("smalldatetime");

                entity.Property(e => e.Mobile).HasMaxLength(30);

                entity.Property(e => e.ModifiedBy).HasMaxLength(50);

                entity.Property(e => e.ModifiedOn).HasColumnType("smalldatetime");

                entity.Property(e => e.Openid).HasMaxLength(100);

                entity.Property(e => e.Org).HasMaxLength(50);

                entity.Property(e => e.Password).HasMaxLength(60);

                entity.Property(e => e.PostNo).HasMaxLength(100);

                entity.Property(e => e.QywxUserId).HasMaxLength(100);

                entity.Property(e => e.Remarks).HasMaxLength(500);

                entity.Property(e => e.ShortNo).HasMaxLength(50);

                entity.Property(e => e.UserName).HasMaxLength(100);

                entity.Property(e => e.UserName_EN).HasMaxLength(100);

                entity.Property(e => e.UserNo).HasMaxLength(50);
            });
 
        }
    }
}
